package com.tlgen.modules.dept.service;

import com.tlgen.modules.dept.domain.Subject;
import com.tlgen.modules.dept.service.dto.SubjectDto;
import com.tlgen.modules.dept.service.dto.SubjectQueryCriteria;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface SubjectService {

    /**
     * 构建树
     * @param SubjectDtos 原始数据
     * @return /
     */
    Map<String,Object> buildTree(List<SubjectDto> SubjectDtos);

    /**
     * 构建树
     * @param SubjectDtos /
     * @return /
     */
    Object buildSubjects(List<SubjectDto> SubjectDtos);


    /**
     * 查询全部数据
     * @param criteria 条件
     * @return /
     */
    List<SubjectDto> queryAll(SubjectQueryCriteria criteria);

    /**
     * 根据pid查询
     * @param pid /
     * @return /
     */
    List<Subject> findByPid(long pid);

    /**
     * 获取树
     * @param Subjects /
     * @return /
     */
    Object getSubjectTree(List<Subject> Subjects);

    /**
     * 新增
     * @param resources /
     * @return /
     */
    SubjectDto create(Subject resources);

    /**
     * 编辑
     * @param resources /
     */
    void update(Subject resources);

    /**
     * 获取待删除的行政区域
     * @param SubjectList /
     * @param SubjectSet /
     * @return /
     */
    Set<Subject> getDeleteSubjects(List<Subject> SubjectList, Set<Subject> SubjectSet);

    /**
     * 根据ID查询
     * @param id /
     * @return /
     */
    Subject findOne(Long id);


    /**
     * 删除
     * @param SubjectSet /
     */
    void delete(Set<Subject> SubjectSet);

    /**
     * 导出
     * @param queryAll 待导出的数据
     * @param response /
     * @throws IOException /
     */
    void download(List<SubjectDto> queryAll, HttpServletResponse response) throws IOException;


}
